#ifndef PURG_C_INTERFACE_H
#define PURG_C_INTERFACE_H

#include <stddef.h>  /* For size_t */

#ifdef __cplusplus
extern "C"
{
#endif

  int *purg_init_rng ( size_t seed1 , size_t seed2 , size_t stream_id );

  void purg_destroy_rng ( int * );

  double  purg_double ( int *gen , double min , double max );

  float  purg_float ( int *gen , float min , float max );

  int   purg_int_bounded ( int *gen , int min , int max );

  int   purg_int ( int *gen );

  long   purg_long_bounded ( int *gen , long min , long max );

  long   purg_long ( int *gen );

  size_t   purg_size_t_bounded ( int *gen , size_t min , size_t max );

  size_t   purg_size_t ( int *gen );

  unsigned int   purg_uint_bounded ( int *gen , unsigned int min , unsigned int max );

  unsigned int   purg_uint ( int *gen );

  unsigned long   purg_ulong_bounded ( int *gen , unsigned long min , unsigned long max );

  unsigned long   purg_ulong ( int *gen );

  void  purg_fill_buffer ( int *gen , void *buffer , size_t length );

#ifdef __cplusplus
}
#endif

#endif
